package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 医生可预约号源对象 sys_appointment_slot
 * 
 * @author ruoyi
 * @date 2025-06-09
 */
public class SysAppointmentSlot extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 号源ID */
    private Long slotId;

    /** 医生ID (关联doctor表的id) */
    @Excel(name = "医生ID (关联doctor表的id)")
    private Long doctorId;

    /** 科室ID (关联department表的id) */
    @Excel(name = "科室ID (关联department表的id)")
    private Long departmentId;

    /** 医院ID (关联hospital表的id) */
    @Excel(name = "医院ID (关联hospital表的id)")
    private Long hospitalId;

    /** 排班日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "排班日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date scheduleDate;

    /** 时间段 (例如: 09:00-09:30, 上午, 下午) */
    @Excel(name = "时间段 (例如: 09:00-09:30, 上午, 下午)")
    private String timeSlot;

    /** 总号源数量 */
    @Excel(name = "总号源数量")
    private Long totalCapacity;

    /** 已预约数量 */
    @Excel(name = "已预约数量")
    private Long bookedCount;

    /** 是否可用 (1:可用, 0:不可用) */
    @Excel(name = "是否可用 (1:可用, 0:不可用)")
    private Integer isActive;

    public void setSlotId(Long slotId) 
    {
        this.slotId = slotId;
    }

    public Long getSlotId() 
    {
        return slotId;
    }
    public void setDoctorId(Long doctorId) 
    {
        this.doctorId = doctorId;
    }

    public Long getDoctorId() 
    {
        return doctorId;
    }
    public void setDepartmentId(Long departmentId) 
    {
        this.departmentId = departmentId;
    }

    public Long getDepartmentId() 
    {
        return departmentId;
    }
    public void setHospitalId(Long hospitalId) 
    {
        this.hospitalId = hospitalId;
    }

    public Long getHospitalId() 
    {
        return hospitalId;
    }
    public void setScheduleDate(Date scheduleDate) 
    {
        this.scheduleDate = scheduleDate;
    }

    public Date getScheduleDate() 
    {
        return scheduleDate;
    }
    public void setTimeSlot(String timeSlot) 
    {
        this.timeSlot = timeSlot;
    }

    public String getTimeSlot() 
    {
        return timeSlot;
    }
    public void setTotalCapacity(Long totalCapacity) 
    {
        this.totalCapacity = totalCapacity;
    }

    public Long getTotalCapacity() 
    {
        return totalCapacity;
    }
    public void setBookedCount(Long bookedCount) 
    {
        this.bookedCount = bookedCount;
    }

    public Long getBookedCount() 
    {
        return bookedCount;
    }
    public void setIsActive(Integer isActive) 
    {
        this.isActive = isActive;
    }

    public Integer getIsActive() 
    {
        return isActive;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("slotId", getSlotId())
            .append("doctorId", getDoctorId())
            .append("departmentId", getDepartmentId())
            .append("hospitalId", getHospitalId())
            .append("scheduleDate", getScheduleDate())
            .append("timeSlot", getTimeSlot())
            .append("totalCapacity", getTotalCapacity())
            .append("bookedCount", getBookedCount())
            .append("isActive", getIsActive())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
